#include "stdafx.h"
#include "Text.h"

NAMESPACE_CORE_BEGIN

int_x TextFormatCalc(const char_8 * szFormat, ...)
{
	va_list pArgs = NULL;
	va_start(pArgs, szFormat);
	int_x iLength = TextFormatCalcArgs(szFormat, pArgs);
	va_end(pArgs);
	return iLength;
}
int_x TextFormatCalc(const char_16 * szFormat, ...)
{
	va_list pArgs = NULL;
	va_start(pArgs, szFormat);
	int_x iLength = TextFormatCalcArgs(szFormat, pArgs);
	va_end(pArgs);
	return iLength;
}
int_x TextFormat(char_8 * szBuffer, int_x iSize, const char_8 * szFormat, ...)
{
	va_list pArgs = NULL;
	va_start(pArgs, szFormat);
	int_x iLength = TextFormatArgs(szBuffer, iSize, szFormat, pArgs);
	va_end(pArgs);
	return iLength;
}
int_x TextFormat(char_16 * szBuffer, int_x iSize, const char_16 * szFormat, ...)
{
	va_list pArgs = NULL;
	va_start(pArgs, szFormat);
	int_x iLength = TextFormatArgs(szBuffer, iSize, szFormat, pArgs);
	va_end(pArgs);
	return iLength;
}
int_x TextFormatCalcArgs(const char_8 * szFormat, void * pvArgs)
{
	return _vscprintf(szFormat, (va_list)pvArgs) + 1;
}
int_x TextFormatCalcArgs(const char_16 * szFormat, void * pvArgs)
{
	return _vscwprintf(szFormat, (va_list)pvArgs) + 1;
}
int_x TextFormatArgs(char_8 * szBuffer, int_x iSize, const char_8 * szFormat, void * pvArgs)
{
	return vsprintf_s(szBuffer, iSize, szFormat, (va_list)pvArgs);
}
int_x TextFormatArgs(char_16 * szBuffer, int_x iSize, const char_16 * szFormat, void * pvArgs)
{
	return vswprintf_s(szBuffer, iSize, szFormat, (va_list)pvArgs);
}

NAMESPACE_CORE_END